﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Estructuras.Comunes
{
    /// <summary>
    /// Tipos posibles de bases de datos.
    /// </summary>
    public enum TipoBaseDatos { ODBC, Oracle, SQLServer };

    /// <summary>
    /// Clase para conversiones de tipo de base de datos.
    /// </summary>
    public static class ConversionesTipoBaseDatos
    {
        /// <summary>
        /// Devuelve el tipo de base de datos en fomato string.
        /// </summary>
        /// <param name="tipo">Tipo de base de datos</param>
        /// <returns>Cadena asociada al tipo de base de datos</returns>
        public static string ToString(TipoBaseDatos tipo)
        {
            switch (tipo)
            {
                case TipoBaseDatos.ODBC:
                    return Constantes.TipoBDODBC;
                case TipoBaseDatos.Oracle:
                    return Constantes.TipoBDOracle;
                case TipoBaseDatos.SQLServer:
                    return Constantes.TipoBDSQLServer;
                default:
                    return Constantes.TipoBDODBC;
            }
        }

        /// <summary>
        /// Devuelve el tipo de base de datos en formato TipoBaseDatos.
        /// </summary>
        /// <param name="tipo">Tipo de base de datos</param>
        /// <returns>Tipo de base de datos asociado a la cadena</returns>
        public static TipoBaseDatos ToTipoBD(string tipo)
        {
            switch (tipo)
            {
                case Constantes.TipoBDODBC:
                    return TipoBaseDatos.ODBC;
                case Constantes.TipoBDOracle:
                    return TipoBaseDatos.Oracle;
                case Constantes.TipoBDSQLServer:
                    return TipoBaseDatos.SQLServer;
                default:
                    throw new Excepcion(Constantes.ERROR_TIPO_BASE_DATOS_NO_DEFINIDO, Constantes.CODIGO_ERROR_TIPO_BASE_DATOS_NO_DEFINIDO);
            }
        }
    }
}
